package com.step;

import javax.microedition.khronos.opengles.GL10;

import com.step.io.Files;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Debug;
import android.util.Log;

/**
 * 该类提供一系列全局变量或常量的定义。
 * @author heop
 *
 */
public class Step {
	public static final String TAG = "Step";
	public static GameActivity context;
	public static boolean enableFps = true;
	public static GameRenderer renderer;
	public static GL10 gl;
	public static Files files;
	public static float aspectRatio = 480f / 800f;
	/**该设置很重要。如果没有设定相机的话*/
	public static Dimension dimension = Dimension.d3d;
	
	public enum Dimension{
		d2d,d3d
	}
	
	/** 输出调试信息*/
	public static void debug (String message) {
		Log.d(TAG, message);
	}
	
	/** 输出调试信息*/
	public static void debug (String tag, String message) {
		Log.d(tag, message);
	}
	
	/** 输出调试信息*/
	public static void debug (String message, Throwable exception) {
		Log.d(TAG, message, exception);
	}
	
	/** 输出调试信息*/
	public static void debug (String tag, String message, Throwable exception) {
		Log.d(tag, message, exception);
	}
	
	/** 输出日志信息*/
	public static void log (String message) {
		Log.i(TAG, message);
	}
	
	/** 输出日志信息*/
	public static void log (String tag, String message) {
		Log.i(tag, message);
	}

	/** 输出日志信息 */
	public static void log (String message, Exception exception) {
		Log.i(TAG, message, exception);
	}
	
	/** 输出日志信息 */
	public static void log (String tag, String message, Exception exception) {
		Log.i(tag, message, exception);
	}

	/** 输出错误信息 */
	public static void error (String message) {
		Log.e(TAG, message);
	}
	
	/** 输出错误信息 */
	public static void error (String tag, String message) {
		Log.e(tag, message);
	}

	/** 输出错误信息 */
	public static void error (String message, Throwable exception) {
		Log.e(TAG, message, exception);
	}
	
	/** 输出错误信息 */
	public static void error (String tag, String message, Throwable exception) {
		Log.e(tag, message, exception);
	}
	
	/** 获取配置对象 */
	public static SharedPreferences getPreferences (String name) {
		if(context == null) throw new RuntimeException(TAG+":当前上下文环境对象为Null");
		return context.getSharedPreferences(name, Context.MODE_PRIVATE);
	}
	
	/** 获取SDK版本号 */
	public static int getVersion () {
		return Integer.parseInt(android.os.Build.VERSION.SDK);
	}

	/** 获取已经使用的内存 */
	public static long getJavaHeap () {
		return Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
	}

	/** 获取已经分配的内存 */
	public static long getNativeHeap () {
		return Debug.getNativeHeapAllocatedSize();
	}
}
